package com.zero2oneblog.controller;

import com.zero2oneblog.entity.UserInfo;
import com.zero2oneblog.service.IUserInfoService;
import com.zero2oneblog.vo.ResponseVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author liangjiu
 * @since 2024-01-03
 */


/*
@Controller
@RequestMapping("/zero2oneblog/userInfo")  这两个注解合用的时候访问不了下面的/all接口
@Controller 注解和 @RequestMapping 注解通常用于处理视图的控制器，而不是 RESTful 风格的 API。常见的视图技术就是JSP,Thymeleaf,FreeMarker等
如果你的目标是创建一个 RESTful API，建议使用 @RestController 注解而不是 @Controller，并确保你的方法返回 JSON 数据而不是视图。

---
@RestController("/zero2oneblog/userInfo")  这个注解也是错的，@RestController 注解并不接受路径参数。删掉参数就可以了

---
    @GetMapping("/all")
    public List<UserInfo> getUserInfo() {
        return iUserInfoService.userInfoList();
    }
 */



@RestController
public class UserInfoController {

    @Autowired
    private IUserInfoService iUserInfoService;

//    @GetMapping("/userInfo")
//    public List<UserInfo> getUserInfo() {
//
//        return iUserInfoService.userInfoList();
//
//    }

    @GetMapping("/userinfo")
    public ResponseVO<List<UserInfo>> getUserInfo() {
        List<UserInfo> data = iUserInfoService.userInfoList();
//        return Response(200,"成功啦！",data); //报错，应为方法调用
        String message = "成功啦！";
        int status = 200;
        ResponseVO response = new ResponseVO(status,message,data);
        return response;

    }

    @GetMapping("/userInfoException")
    public void getUserInfoException() {
        throw new IllegalArgumentException("主动抛出异常！");
    }


    @GetMapping("/login")
    public String login() {
        return "login.html";
    }


    @GetMapping("/public/userInfoSUCCESS")
    public ResponseVO<List<UserInfo>> getUserInfoSUCCESS() {
        List<UserInfo> data = iUserInfoService.userInfoList();
        ResponseVO response = ResponseVO.ok(data);
        return response;

    }

    @GetMapping("/public")
    public String publicTest() {

        return "ok";

    }




}
